﻿using FreshTexture.Settings;
using System;
using System.IO;

namespace FreshTexture.Model
{
    /// <summary>
    /// Klasa używana do wczytywania plików. Metoda wejściowa to LoadZIp i SaveZip. Metody zwracają wczytane dane które należy przerobić na <Entity></Entity>
    /// </summary>
    internal static class FileIO
    {
        // TODO zrobic w klasie zeby z mysettings wybierala wlasciwy strumien (dysk lub pamiec). Ustawiac ma to metoda MemoryIO

        public static void ClearDir(Enum dirsEnum)
        {
            if (dirsEnum != null)
            {
                if (Directory.Exists(GetDir(dirsEnum)))
                {
                    Directory.Delete(GetDir(dirsEnum), true);
                }
            }
        }

        public static void CreateDirs()
        {
        }

        public static void ClearDirs()
        {
            throw new NotImplementedException();
        }

        public static void SaveCache(string fileName)
        {
        }

        public static void CreateDir(Enum dirsEnum)
        {
            if (dirsEnum != null)
            {
                try
                {
                    Directory.CreateDirectory(GetDir(dirsEnum));
                }
                catch (Exception)
                {
                    throw new NotImplementedException();
                }
            }
        }

        private static string GetDir(Enum dirsEnum)
        {
            return MySettings.GetString(dirsEnum);
        }

        public static string[] ReadFilelist(Enum dirsEnum)
        {
            if (dirsEnum != null)
            {
                return Directory.GetFiles(GetDir(dirsEnum));
            }
            return null;
        }

        public static void LoadZip(Uri from, Enum where)
        {
           ZipIO.Unpack(from);
        }

        public static void SaveZip(Uri from, Enum where)
        {
            ZipIO.Pack(from, new Uri(where.ToString()), "FileName");
        }
    }
}